Подготовка серверов¶
Tarantool Column Store – колоночная транзакционно-аналитическая СУБД, построенная на платформе Tarantool Enterprise Edition.
TCS наследует от Tarantool базовые возможности хранения и масштабирования:
данные хранятся в оперативной памяти;
хранение персистентно;
доступен механизм репликации.
Таким образом, перед установкой и эксплуатацией TCS требуется подготовить сервера для использования сопутствующего ПО Tarantool.
Подготовка серверов к использованию Tarantool¶
Настройте межсетевой экран (firewall):
a. Настройте порты для бинарного протокола Tarantool.
Tarantool использует как TCP, так и UDP, для взаимодействия внутри кластера.
Откройте пул портов 3301 — 3401 для TCP и UDP трафика, для внутреннего трафика на всех серверах, на которых устанавливается Tarantool.
Если внешние приложения обращаются к кластеру по бинарному протоколу, также необходимо открыть пул портов 3301 — 3401, но достаточно TCP.
Важно
Каждый экземпляр Tarantool должен иметь связь со всеми остальными экземплярами (full-mesh).
Примечание
Порты могут быть открыты только между соответствующими серверами или в конкретных подсетях. Детали настройки межсетевого экрана в вашем окружении уточняйте у команд инфраструктуры и информационной безопасности.
b. Настройте порты для TCP и HTTP(s).
TCP используется для взаимодействия администраторов с веб-интерфейсом модуля Tarantool Cluster Manager (TCM).
На всех серверах, на которых устанавливается TCM, откройте порт для TCP-трафика, указанный в конфигурации TCM (по умолчанию 8080).
Встроенный в Tarantool сервер может принимать SSL трафик, поэтому проксирование HTTPs-трафика на HTTP-порты настраивать не нужно.
Откройте пул портов 8001 — 8101 для HTTPs-трафика на всех серверах, на которых устанавливается Tarantool.
HTTP используется для взаимодействия с интерфейсом сервиса TCS, где ждет ввод обработчик
/sql.Откройте пул портов 7700-7800 для HTTPs трафика на всех серверах, на которых будет запущен сервис TCS.
c. Настройте порты для внутреннего трафика для
etcd. По умолчанию используется порт 2379.d. В случае, если у вас:
отдельно стоящий сервер, или
один из серверов под Tarantool, или
агент CI/CD системы,
настройте также:
доступ по 22 порту (ssh) для devops-инженера;
сетевой доступ по 22 порту (ssh) до всех серверов, на которые производится установка. В том числе до серверов под
etcdи других сервисов.
Настройте DNS.
Все сервера должны находить друг друга по FQDN (доменное имя локальной машины). Удобно использовать доменное имя для обозначения экземпляров Tarantool в кластере.
Разбейте дисковое пространство в соответствии с рекомендациями для оптимальной работы экземпляров Tarantool:
журналы (logs) — 2 GB * количество экземпляров Tarantool, но не менее 15 GB
журнал упреждающей записи (WAL) — 40-50% от RAM, используемого всеми экземплярами Tarantool
снимки данных (snapshots) — 100-110% от RAM, используемого всеми экземплярами Tarantool
Разбейте диски в соответствие с расчетами и подключите директории с помощью команды
mount.Скорректируйте параметры ядра.
a. Задайте параметры overcommit по памяти:
sudo cat << EOF >> /etc/sysctl.conf vm.overcommit_memory = 2 vm.overcommit_ratio = 100 EOF
Примечание
В случае виртуализации запрещено использовать overcommit по памяти и swap-раздел.
b. При ошибочном завершении Tarantool должен быть создан coredump-файл, который понадобится нашим специалистам для исследования проблемы. Файлы должны собираться в доступную на запись директорию, иметь в названии PID, signal и timestamp. Для корректного сохранения отладочной информации потребуются следующие настройки:
sudo cat << EOF >> /etc/sysctl.conf kernel.core_uses_pid = 1 kernel.core_pattern = /app/tarantool/coredump/core-%e-%u-%g-%p-%t EOF
c. Настройте пул портов для исходящих запросов.
Исходящие соединения могут занимать порты, предназначенные для бинарного протокола Tarantool.
sudo cat << EOF >> /etc/sysctl.conf net.ipv4.ip_local_port_range = 32768 61000 EOF
Установите необходимое стороннее ПО.
a. Установите etcd версии не ниже 3.4.
b. Установите OpenSSL версии выше 3.0.0.
Установите вспомогательные утилиты.
Примечание
Некоторые утилиты могут быть предустановлены с ядром ОС. Нет необходимости обновлять их на последнюю версию.
Команды для поддерживаемых ОС:
Для Astra Linux:
sudo apt update sudo apt install -y \ logrotate \ # Для ротации логов cronie \ # Утилита crontab gdb \ # Для сбора отладочной информации в случае падения gcore \ # Для создания coredump-файла на лету telnet \ # Для проверки сетевой связности узлов iperf3 \ # iptraf-ng \ # htop # Более красивый top
Для РЕД ОС:
sudo dnf install -y \ logrotate \ cronie \ gdb \ telnet \ iperf3 \ iptraf-ng \ htop
Создайте учетные записи.
Создайте группу
tarantoolи локального пользователяtarantoolдля запуска и управления Tarantool:sudo groupadd -g 3301 tarantool sudo useradd -m -u 3301 -g 3301 --system tarantool
Для корректной работы пользователя
tarantoolсsystemctlв пользовательском окружении выполните команду:sudo loginctl enable-linger tarantool
Аналогично
tarantool, потребуется учетная запись для работы сetcd. Соответствующий пользователь должен создаваться в процессе установкиetcd. Если этого не произошло, создайте его самостоятельно:sudo groupadd etcd sudo useradd -m -g etcd --system etcd
Активируйте
systemduserspace:sudo loginctl enable-linger tarantool
Создайте директории для записи на диск:
sudo mkdir -p /app/tarantool sudo mkdir -p /app/tarantool/coredump sudo mkdir -p /app/logs sudo mkdir -p /app/snap sudo mkdir -p /app/etcd
И задайте права:
sudo chown tarantool:tarantool /app/tarantool sudo chown tarantool:tarantool /app/tarantool/coredump sudo chown tarantool:tarantool /app/logs sudo chown tarantool:tarantool /app/snap sudo chown etcd:etcd /app/etcd
Настройте лимиты для группы
tarantool.
sudo cat << EOF >> /etc/security/limits.d/tarantool.conf
@tarantool - nproc 64000
@tarantool - nofile 64000
@tarantool - core unlimited
EOF
Настройте оркестратор.
a. Создайте systemd service-файлы (для РЕД ОС и RHEL).
b. Включите персистентное хранилище journald (для РЕД ОС и RHEL).
c. Выдайте sudo-права администратору Tarantool.
Для обслуживания серверов с Tarantool удобно выделить некоторую доменную
группу из AD. Этой группе выдайте соответствующие права на переход под
пользователей `tarantool` и `etcd`. Также нужны права на управление
сервисами и просмотр журналов для `etcd`.
Указанный список в формате `sudoers` выглядит примерно так:
```
# пример для Astra Linux:
%GROUP@domain.ru ALL=(tarantool) NOPASSWD: ALL
%GROUP@domain.ru ALL=(etcd) NOPASSWD: ALL
%GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/systemctl status etcd
%GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/systemctl restart etcd
%GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/systemctl reload etcd
%GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/systemctl start etcd
%GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/systemctl stop etcd
%GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/systemctl enable etcd
%GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/systemctl disable etcd
%GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/systemctl edit etcd
%GROUP@domain.ru ALL=(ALL) NOPASSWD: /bin/journalctl -u etcd
```
Настройте ротацию журналов.
Для Astra Linux:
Убедитесь, что утилита
crontabустановлена.Добавьте пользователя
tarantoolв группуcrontab.sudo usermod -a -G crontab tarantool
Для РЕД ОС:
В РЕД ОС права на
crontabорганизуются через файлы/etc/cron.allowи/etc/cron.deny. Проверьте, что выполняется любое из двух условий:пользователь
tarantoolесть в файле/etc/cron.allow, либофайла
/etc/cron.allowнет, а файл/etc/cron.denyпуст (crontabдоступен всем).